package nj.yb.mapper;

import nj.yb.entity.message.ChatMessage;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface ChatMessageMapper {

    /**
     * 将收到的消息写入数据库
     */
    void insertMessage(ChatMessage chatMessage);


    /**
     * 查询用户相关的历史消息
     * @param username 当前用户
     * @param limit 拉取条数
     * @return 历史消息列表
     */
    List<ChatMessage> queryHistoryMessages(
            @Param("username") String username,
            @Param("limit") Integer limit);

    /**
     * 查询用户与指定用户的私聊历史消息
     * @param username 当前用户
     * @param targetUser 目标用户
     * @param limit 拉取条数
     * @return 私聊历史消息列表
     */
    List<ChatMessage> queryPrivateHistoryMessages(
            @Param("username") String username,
            @Param("targetUser") String targetUser,
            @Param("limit") Integer limit);

    /**
     * 查询用户与指定用户之间的未读消息
     * @param username
     * @param targetUser
     * @return
     */
    List<ChatMessage> queryPrivateNotReadMessages(
            @Param("username") String username,
            @Param("targetUser") String targetUser
    );

    int updateUnreadToRead(
            @Param("username") String username,
            @Param("targetUser") String targetUser
    );

    // 查询群聊历史消息
    List<ChatMessage> getGroupHistoryMessages(
            @Param("groupId") Long groupId,
            @Param("limit") int limit
    );

    // 标记群消息为已读（可选：按群+用户维度）
    int markGroupMessagesAsRead(
            @Param("groupId") Long groupId,
            @Param("username") String username
    );
}
